package com.beiming.libra.service;


import com.beiming.libra.common.page.PageResult;
import com.beiming.libra.domain.CaseStatus;
import com.beiming.libra.domain.dto.requestdto.ArbitrationBusinessDisputesUpdateRequestDTO;
import com.beiming.libra.domain.dto.requestdto.ArbitrationCaseActionUpdateRequestDTO;
import com.beiming.libra.domain.dto.requestdto.ArbitrationCaseRequestDTO;
import com.beiming.libra.domain.dto.requestdto.ArbitrationCaseUpdateRequestDTO;
import com.beiming.libra.domain.dto.responsedto.ArbitrationCaseBasicResponseDTO;
import com.beiming.libra.domain.dto.responsedto.ArbitrationCaseResponseDTO;
import com.beiming.libra.domain.dto.responsedto.CaseUserEditQueryResponseDTO;
import com.beiming.libra.service.base.BaseService;
import java.util.List;

/**
 * @author zhangqi
 */

public interface ArbitrationCaseService<T> extends BaseService<T> {

  /**
   * 案件基本列表查询
   * @param arbitrationCase
   * @param userId
   * @return
   */
  PageResult<ArbitrationCaseBasicResponseDTO> getArbitrationCaseBasicList(
      ArbitrationCaseRequestDTO arbitrationCase,
      String userId);

  /**
   * 补正立案所有信息查询
   * @param caseNo
   * @return
   */
  ArbitrationCaseResponseDTO getArbitrationCase(String caseNo);

  /**
   * 补正立案业务要素更新
   * @param abdUpdateDTO
   * @return
   */
  public int updateArbitrationBusinessDisputes(ArbitrationBusinessDisputesUpdateRequestDTO abdUpdateDTO);

  /**
   * 补正立案基本信息更新
   * @param acUpdateDTO
   * @return
   */
  public int updateCaseBasicInfo(ArbitrationCaseUpdateRequestDTO acUpdateDTO);

  /**
   * 案件动作元素更新,工作员
   * @param arbitrationCaseActionUpdateRequestDTO
   * @return
   */
  public int updateCaseStatusForWork(ArbitrationCaseActionUpdateRequestDTO arbitrationCaseActionUpdateRequestDTO);

  /**
   * 案件动作元素更新,一般用户
   * @param arbitrationCaseActionUpdateRequestDTO
   * @return
   */
  public int updateCaseStatusForUser(ArbitrationCaseActionUpdateRequestDTO arbitrationCaseActionUpdateRequestDTO);

  /**
   * 获取案件状态枚举
   * @param userType
   * @return
   */
  List<CaseStatus> selectCaseStatus(Integer userType);

  /**
   * 案件状态列表
   * @return
   */
  List<CaseStatus> selectCaseStatus();

  /**
   * 获取案件当事人/代理人
   * @return
   */
  CaseUserEditQueryResponseDTO selectCaseUser(String id);

  public int updateCaseUser(String[] ids);

  public int deleteCaseUser(String[] ids);

}
